/* スライドアニメーション用変数 */
    // 背景の初期位置
    var posX = 0;

    // 背景スクロールを止める箇所(px)
    var stop_posX = 6500;

    // スクロールスピード初期値
    var speed = 3;

    // スクロールスピードの加速値
    var acc = 0.001;

    // フレームレート(fps)
    var interval = 30;

/* Gamanゲージ用変数 */
    // 背景の初期位置
    var gm_posX = 1000;

    // スクロールスピード
    var gm_speed = 12;

    // フレームレート(fps)
    var gm_interval = 1000;

   
/* キーボードリスナ用変数 */
    // 走る画像のパス
    var run_path = "img/tnz_run_trim.png";

    // 飛ぶ画像のパス
    var jmp_path = "img/tnz_jump_trim.png";

    // 通常画像のパス
    var nor_path = "img/tnz_normal_trim.png";

    // 連打防止用
    var key_flag = true;

    // ジャンプのスピード
    var jmp_duration = 2000;    

    // 着地のスピード
    var cha_duration = 1500;

    // 着地後、横スライドするスピード
    var slide_duration = 1000;

    // カウントダウン文字が切り替わる間隔
    var duration = 500;

/* 当たり判定の位置 */
    // ダルシムに当ってちゃってるフラグ
    var dal_flag = false;

    // ダルシム
    var dal_start = 1500;
    var dal_end   = 1700;

    // ケンシロウに当ってちゃってるフラグ
    var ken_flag = false;

    // ケンシロウ
    var ken_start = 2450;
    var ken_end   = 2650;

    // フリーザ
    var freezer_start = 3400;
    var freezer_end   = 3650;
    var freezer_flag = false;
 
    // DIO
    var dio_start = 4400;
    var dio_end   = 4650;
    var dio_flag  = false;

    // ゾーマ
    var zoma_start = 5200;
    var zoma_end   = 5450;
    var zoma_flag  = false;

    
/* 残り距離数お知らせ用 */

    var leave = 1500;

/* ゲーム開始時にクリックしたフラグ */

    var tnz_click_flag = false;

/* debug */
// エンディングデバッグ用   
//var stop_posX = 0;

// GameOverデバッグ用
// var gm_speed = 1200;


/* 開始ルーチン */
$(document).ready(function(){

    // debug
    //endingTopAnimation();

    // クリックしたらスタート
    $(".object").click(function(){

        if(!(tnz_click_flag)){
            tnz_click_flag = true;
            $("#content").animate({ "opacity": 1 }, duration, function(){

                // カウントダウンアニメーションを開始
                startAnimation();  
  
            });
        }
    });

});

// カウントダウンアニメーション
// 以下、fadeIn,Outしながらカウントダウン処理
// setTimeout関数にてジョブの遅延実行を行う

function startAnimation(){

    // ジャンプ無効
    key_flag = false;
    $(".start").text("Ready..");

    $(".start").fadeIn(duration, function(){ 
        $(this).fadeOut(duration, function(){
            $(this).text("3");
        })
    });

    setTimeout(function(){
        $(".start").fadeIn(duration, function(){

            $(this).fadeOut(duration, function(){
                $(this).text("2");
            })
        })
    }, duration * 2);

    setTimeout(function(){
        $(".start").fadeIn(duration, function(){

            $(this).fadeOut(duration, function(){
                $(this).text("1");
            })
        })
    }, duration * 4);

    setTimeout(function(){
        $(".start").fadeIn(duration, function(){

            $(this).fadeOut(duration, function(){
                $(this).text("Go!!");
            })
        })
    }, duration * 6);

    setTimeout(function(){
        $(".start").fadeIn(duration, function(){

            $(this).fadeOut(duration, function(){
                // jqueryでのコーディングが判らないので、普通のhtml5で再生
                penguin.play();

                // ジャンプ有効
                key_flag = true;

                // 上記アニメーション終了後、背景画像のスライドを開始
                slideAnimation();

                // Gamanゲージ増加開始
                gamanAnimation();
            })
        })
    }, duration * 8);
}


// 背景画像のスライド用関数
function slideAnimation(){

    // 走る！
    $(".object").css({
        width: "130px",
        left: "830px",
        top: "190px"
    });
    $(".object").attr("src", run_path);

    // 1ms毎に背景画像を移動させる関数
    slide_timer = setInterval(function(){

        // スクロールブレーキ(成功時)
        if(posX > stop_posX){
            speed = 0;
            gm_speed = 0;
            $(".object").animate({ top: "-200px" }, duration);
            clearInterval(slide_timer);
            clearInterval(gaman_timer);
            endingTopAnimation();
        }

        // スクロール加速 
        speed += acc;
        posX += speed;

        // 背景画像を動かす
        $("#content").css("background-position", posX+"px 0px");

        // デバッグ用オドメータ
        $("p.px_mator").text(posX+" px");

        // デバッグ用スピードメータ
        $("p.ac_mator").text(speed+" px/ms");

        // デバッグ用Gamanメータ
        $("p.gm_mator").text(gm_posX+" px");

    // 当たり判定関数を起動
    obtAnimation();        

    // 残り距離数表示関数を起動
    leaveAnimation();

    }, interval);
};

// 肛門ゲージ関数
function gamanAnimation(){

    gaman_timer = setInterval(function(){

        // 肛門崩壊
        if(gm_posX <= 4){

            // スライド、Gamanメータの停止
            clearInterval(slide_timer);
            clearInterval(gaman_timer);
            penguin.pause();

            // メイン画面のフェードアウト            
            $("#content").fadeOut(duration * 2, function(){
            pen_end.play();
                // GameOver画面のフェードイン
                $("#failed").fadeIn(duration * 2, function(){
                    $(".failed_msg").text("Oh my God...");
                    $(".failed_msg").fadeIn(duration * 2, function(){
                        $(this).fadeOut(duration * 2, function(){
                            $(this).text("Game Over");
                            $(this).fadeIn(duration * 2);
			});
                    });                  
                }); 
            });
        }

        // 肛門加速
        gm_posX -=  gm_speed;
        $(".memory").css("background-position", gm_posX+"px 0px");

    }, gm_interval);
}

// キーボードリスナ関数
$('html').keydown(function(e){

    // 上キー
    switch(e.which){
        case 38:

        // 連打禁止処理
        if(key_flag){
            key_flag = false;

            // ジャンプ！
            fufufu.play();
            $(".object").css("width", "80px");
            $(".object").attr("src", jmp_path);
            $(".object").animate({top: '-=200px', left: '-=150px'}, jmp_duration, function(){
                $(".object").attr("src", nor_path);
            });

            // 着地！

            $(".object").animate({top: '+=200px', left: '-=150px'}, cha_duration, function(){

            sta.play();
                $(".object").attr("src", run_path);
                $(".object").css({
                    width: "130px"
                });
            });    

            // 元の位置にスライド
            $(".object").animate({left: '+=300px'}, slide_duration, function(){

                // すべてのアニメーションが完了した後、連打防止フラグを戻す
                key_flag = true;
            });
            break;

        // 連打されている場合はfalseを返却
        }else{ 
            return false;
        }
    }
});


/*当たり判定用関数*/
function obtAnimation(){

    // ダルシム当たり判定処理
    if(posX > dal_start && posX < dal_end && key_flag && !(dal_flag)){

        fuwan.play();
        // 当たるとしばらく半透明、Gamanゲージ増える
        $(".object").css("opacity", "0.3");
        gm_posX -= 100;
        dal_flag = true;
    }

    // 半透明を元に戻す(ダルシム)
    if(dal_flag && posX > dal_end + 100){

        $(".object").css("opacity", "1.0");
        dal_flag = false;
    }

    // ケンシロウ当たり判定処理
    if(posX > ken_start && posX < ken_end && key_flag && !(ken_flag)){

        fuwan.play();
        // 当たるとしばらく半透明、Gamanゲージ増える
        $(".object").css("opacity", "0.3");
        gm_posX -= 100;
        ken_flag = true;
    }

    // 半透明を元に戻す(ケンシロウ)
    if(ken_flag && posX > ken_end + 100){
        $(".object").css("opacity", "1.0");
        ken_flag = false;
    }

    // フリーザ当たり判定処理
    if(posX > freezer_start && posX < freezer_end && key_flag && !(freezer_flag)){

        fuwan.play();
        // 当たるとしばらく半透明、Gamanゲージ増える
        $(".object").css("opacity", "0.3");
        gm_posX -= 100;
        freezer_flag = true;
    }

    // 半透明を元に戻す(フリーザ)
    if(freezer_flag && posX > freezer_end + 100){
        $(".object").css("opacity", "1.0");
        freezer_flag = false;
    }

    // DIO当たり判定処理
    if(posX > dio_start && posX < dio_end && key_flag && !(dio_flag)){

        fuwan.play();
        // 当たるとしばらく半透明、Gamanゲージ増える
        $(".object").css("opacity", "0.3");
        gm_posX -= 100;
        dio_flag = true;
    }

    // 半透明を元に戻す(DIO)
    if(dio_flag && posX > dio_end + 100){
        $(".object").css("opacity", "1.0");
        dio_flag = false;
    }

    // ゾーマ当たり判定処理
    if(posX > zoma_start && posX < zoma_end && key_flag && !(zoma_flag)){

        fuwan.play();
        // 当たるとしばらく半透明、Gamanゲージ増える
        $(".object").css("opacity", "0.3");
        gm_posX -= 100;
        zoma_flag = true;
    }

    // 半透明を元に戻す(ゾーマ)
    if(zoma_flag && posX > zoma_end + 100){
        $(".object").css("opacity", "1.0");
        zoma_flag = false;
    }


}

// 残り距離数を表示する関数
function leaveAnimation(){

    if(posX > leave && posX < leave + 100){

        leave_pos = (stop_posX - leave) / 10;
        $(".start").text("残り" + leave_pos + "メートル");
        $(".start").fadeIn(duration / 2, function(){

            $(this).fadeOut(duration / 2);
        });
    }

    if(posX > leave * 2 && posX < leave * 2 + 100){

        leave_pos = (stop_posX - (leave * 2)) / 10;
        $(".start").text("残り" + leave_pos + "メートル");
        $(".start").fadeIn(duration / 2, function(){

            $(this).fadeOut(duration / 2);
        });
    }

    if(posX > leave * 3 && posX < leave * 3 + 100){

        leave_pos = (stop_posX - (leave * 3)) / 10;
        $(".start").text("残り" + leave_pos + "メートル");
        $(".start").fadeIn(duration / 2, function(){

            $(this).fadeOut(duration / 2);
        });
    }

    if(posX > leave * 4 && posX < leave * 4 + 100){

        leave_pos = (stop_posX - (leave * 4)) / 10;
        $(".start").text("残り" + leave_pos + " 頑張れ！");
        $(".start").fadeIn(duration / 2, function(){

            $(this).fadeOut(duration / 2);
        });
    }
}

function endingTopAnimation(){

    penguin.pause();    
    pen_end.play();
    // メイン画面のフェードアウト            
    $("#content").fadeOut(duration * 4, function(){


        // エンディング画面のフェードイン
        $("#ending").fadeIn(duration * 3, function(){

            endingOneAnimation();
        });
    });
}

function endingOneAnimation(){
    endingTwoAnimation();

/*
    $(".tnz_face").fadeIn(duration * 2, function(){

        $(this).animate({ top: '100px', left: '-200px', width: '80px'},
        duration * 12, function(){

            $("#ending").fadeOut(duration * 4, function(){

                $(this).css("background-image", "url(img/google_asia.png)");
                $(".tnz_face").css({ top: "100px", width: "20px", left: "750px", display: "none" });
                endingTwoAnimation();
            });
        });
    });
*/
}

function endingTwoAnimation(){

    $("#ending").fadeIn(duration * 4, function(){

        $(".tnz_face").fadeIn(duration * 2, function(){

            $(this).animate({ top: "70px", left: "-200px", width: '150px' }, duration * 4, function(){

                $("#ending").fadeOut(duration *4, function(){

                    $(".tnz_face").css({ top: "180px", width: "20px", left: "680px", display: "none" });
                    $("#ending").css("background-image", "url(img/google_world.png)");
                    endingThreeAnimation();
                });
            });
        });
    });
}

function endingThreeAnimation(){

    $("#ending").fadeIn(duration * 4, function(){

        $(".tnz_face").fadeIn(duration * 2, function(){

            $(this).animate({ top: "150px", left: "400px", width: '80px' }, duration * 10, function(){

                $(this).animate( { top: "300px", left: "120px", width: '20px'}, duration * 12, function(){

                    $(this).fadeOut(duration * 4, function(){
                        
                        $("#ending").fadeOut(duration * 4, function(){

                            $(".tnz_face").attr("src", nor_path);
                            $(".tnz_face").css({ top: "-100px", width: "75px", left: "850px"});
                            $("#ending").css("background-image", "url(img/africa.png)");
                            endingFourAnimation();
			});
		    });
		});
            });
	});
    });
}

function endingFourAnimation(){

    $("#ending").fadeIn(duration * 4, function(){

        $(".tnz_face").fadeIn(duration * 2, function(){

            $(this).animate({ top: "220px", left: "720px" }, duration * 2, function(){

                $(this).attr("src", run_path);
                $(this).css({ width: "120px" });
                $(this).animate({ left: "-300px" }, duration * 3, function(){

                    $(this).fadeOut(duration * 2);
                    $(".ending").text("To be Continue...");
                    $(".ending").fadeIn(duration * 3);
		});
	    });
	});
    });
}


function soundPlay(){


}


